home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / etc / ca-certificates / update.d / jks-keystore
Encoding:
Text File  |  2010-04-11  |  2.9 KB  |  113 lines

  1. #! /bin/sh
  2.  
  3. set -e
  4.  
  5. storepass='changeit'
  6. if [ -f /etc/default/cacerts ]; then
  7.     . /etc/default/cacerts
  8. fi
  9.  
  10. KEYSTORE=/etc/ssl/certs/java/cacerts
  11.  
  12. echo ""
  13. if [ "$cacerts_updates" != yes ] || [ "$CACERT_UPDATES" = disabled ]; then
  14.     echo "updates of cacerts keystore disabled."
  15.     exit 0
  16. fi
  17.  
  18. if ! mountpoint -q /proc; then
  19.     echo >&2 "the keytool command requires a mounted proc fs (/proc)."
  20.     exit 1
  21. fi
  22.  
  23. for jvm in java-6-openjdk java-6-sun java-6-cacao; do
  24.     if [ -x /usr/lib/jvm/$jvm/bin/keytool ]; then
  25.     break
  26.     fi
  27. done
  28. export JAVA_HOME=/usr/lib/jvm/$jvm
  29. PATH=$JAVA_HOME/bin:$PATH
  30.  
  31. temp_jvm_cfg=
  32. if [ ! -f /etc/$jvm/jvm.cfg ]; then
  33.     # the jre is not yet configured, but jvm.cfg is needed to run it
  34.     temp_jvm_cfg=/etc/$jvm/jvm.cfg
  35.     mkdir -p /etc/$jvm
  36.     printf -- "-server KNOWN\n" > $temp_jvm_cfg
  37. fi
  38.  
  39. # read lines of the form: [+-]/etc/ssl/certs/*.pem
  40.  
  41. echo "updating keystore $KEYSTORE..."
  42.  
  43. errors=0
  44. log=$(tempfile)
  45. while read line; do
  46.     pem=${line#[+-]*}
  47.     alias=$(basename $pem .crt | tr A-Z a-z | tr -cs a-z0-9 _)
  48.     alias=${alias%*_}
  49.     LANG=C LC_ALL=C keytool -list -keystore $KEYSTORE \
  50.     -storepass "$storepass" -alias "$alias" >/dev/null 2>&1 \
  51.     && exists=yes || exists=no
  52.     case "$line" in
  53.     +*)
  54.     if [ "$exists" = yes ]; then
  55.         echo "  already exists: ${line#+*}"
  56.     else
  57.       if LANG=C LC_ALL=C keytool -importcert -trustcacerts \
  58.         -keystore $KEYSTORE -noprompt -storepass "$storepass" \
  59.         -alias "$alias" -file "$pem" > $log 2>&1
  60.       then
  61.           echo "  added: ${line#+*}"
  62.       elif LANG=C LC_ALL=C keytool -importcert -trustcacerts \
  63.         -keystore $KEYSTORE -noprompt -storepass "$storepass" \
  64.             -providerClass sun.security.pkcs11.SunPKCS11 \
  65.             -providerArg '${java.home}/lib/security/nss.cfg' \
  66.         -alias "$alias" -file "$pem" > $log 2>&1
  67.       then
  68.           echo "  added: ${line#+*} (using NSS provider)"
  69.       elif grep -q 'Signature not available' $log; then
  70.           echo "  ignored import, signature not available: ${line#+*}"
  71.           cat $log
  72.       else
  73.           echo >&2 "  error adding ${line#+*}"
  74.           errors=$(expr $errors + 1)
  75.       fi;
  76.     fi
  77.     ;;
  78.     -*)
  79.     if [ "$exists" = yes ]; then
  80.         if LANG=C LC_ALL=C keytool -delete -keystore $KEYSTORE \
  81.         -noprompt -storepass "$storepass" \
  82.         -alias "$alias"
  83.         then
  84.         echo "  removed ${line#-*}"
  85.         elif LANG=C LC_ALL=C keytool -delete -keystore $KEYSTORE \
  86.         -noprompt -storepass "$storepass" \
  87.             -providerClass sun.security.pkcs11.SunPKCS11 \
  88.             -providerArg '${java.home}/lib/security/nss.cfg' \
  89.         -alias "$alias"
  90.         then
  91.         echo "  removed ${line#-*} (using NSS provider)"
  92.         else
  93.         echo >&2 "  error removing ${line#+*}"
  94.         errors=$(expr $errors + 1)
  95.         fi
  96.     else
  97.         echo "  does not exist: ${line#-*}"
  98.     fi
  99.     ;;
  100.     *)
  101.     echo >&2 "  $0: Unknown line $line"
  102.     esac
  103. done
  104. rm -f $log
  105.  
  106. [ -z "$temp_jvm_cfg" ] || rm -f $temp_jvm_cfg
  107.  
  108. if [ $errors -gt 0 ]; then
  109.     echo >&2 "failed (VM used: $jvm)."
  110.     exit 1
  111. fi
  112. echo "done."
  113.